import { useUserStore } from '@/store/user';
import { DirectiveBinding } from "vue"
import router from '@/router'

const SUPERADMIN_IDS = [1]

export default {
  mounted(el: HTMLElement, binding: DirectiveBinding) {
    // 如果没传值 不进行鉴权
    if (!binding.value) return

    const userStore = useUserStore()
    let userInfo = userStore.getUserInfoGetter
    // 判断当前用户是否是超管
    if (!SUPERADMIN_IDS.includes(userInfo?.roleId)) {
      let routeInfo = router.currentRoute.value
      // 路由有ID进行鉴权，没有不进行鉴权
      if (routeInfo.meta.id) {
        // 用户如果没有roleList 不进行鉴权
        if (userInfo && userInfo.hasOwnProperty('powerList')) {
          if (!userInfo.powerList) {
            // 如果powerList为null 认为没有权限
            el.style.display = 'none'
          } else {
            let powerItem = userInfo.powerList.find((item: KeyValue) => item.routeId === routeInfo.meta.id)
            if (powerItem) {
              let actionList: { action: string }[] = powerItem.actionList
              if (actionList && Array.isArray(actionList)) {
                // 判断操作权限中是否有该dom的权限，有的话不进行处理，没有进行隐藏（没有权限）
                if (!actionList.find(item => item.action === binding.value)) {
                  el.style.display = 'none'
                }
              } else {
                // 排除actionList的存在情况 不存在认为没有权限
                el.style.display = 'none'
              }
            } else {
              // 如果用户的路由权限列表里没有当前路由 认为没有权限
              el.style.display = 'none'
            }
          }
        }
      }
    }
  }
}